//package org.szy.core.common.filter;
//
//import org.noear.solon.annotation.Component;
//import org.noear.solon.core.handle.Context;
//import org.noear.solon.core.handle.Filter;
//import org.noear.solon.core.handle.FilterChain;
//import org.noear.solon.core.util.RunUtil;
//import org.noear.solon.validation.ValidatorException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.szy.core.common.entity.R;
//import org.szy.core.common.exception.BaseException;
//import org.szy.core.common.exception.BaseExceptionCode;
//import org.szy.core.common.uilts.ReqUtil;
//
///**
// * 验证程序失败筛选器
// *
// * @author 孙志阳
// * @date 2023-02-10
// * @since 1.0.0
// **/
//@Component
//public class GlobalErrorFilter implements Filter {
//
//    static Logger log = LoggerFactory.getLogger(GlobalErrorFilter.class);
//
//    @Override
//    public void doFilter(Context ctx, FilterChain chain) throws Throwable {
//        handleFilter(ctx, chain);
//    }
//
//    protected void handleFilter(Context ctx, FilterChain chain) throws Throwable {
//        try {
//            chain.doFilter(ctx);
//            if (!ctx.getHandled()) {
//                if (ReqUtil.isAjax(ctx)) {
//                    ctx.render(BaseExceptionCode.CODE_4001011);
//                } else {
//                    log.error("未找到页面，跳转到404页，请求地址：{}", ctx.path());
//                    ctx.forward("/error/404");
//                }
//            }
//        } catch (BaseException e) {
//            ctx.render(R.fail(e.getMsg()));
//        } catch (ValidatorException e) {
//            //验证器异常
//            ctx.render(R.fail(e.getMessage()));
//        } catch (Throwable e) {
//            log.error("Throwable", e);
//            if (e instanceof Exception) {
//                ctx.render(R.fail(e.getMessage()));
//            } else {
//                ctx.render(R.fail("服务器异常"));
//            }
//        }
//    }
//}
